<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<meta http-equiv="content-style-type" content="text/css">
<link rel="stylesheet" type="text/css" href="style.css">
<title>Maven Plugin</title>
</head>
<body>

<script type="text/javascript" language="JavaScript">
<!--
if (window.self==window.top)
  document.write('<a target="_top" href="index.html#maven.html" class="largebutton">DexGuard index</a>')
//-->
</script>
<noscript>
<a target="_top" href="index.html#maven.html" class="largebutton">DexGuard index</a>
</noscript>

<h2>Maven Plugin</h2>

<b>DexGuard</b> is integrated in Maven with the DexGuard Maven plugin, which is
an extension of the Android Maven plugin (version 3.8.0, for Maven version
3.1.1).
<p>

<h3><a name="installation">Installation</a></h3>

You first need to install the DexGuard Maven plugin in your local Maven
repository. Assuming Maven is already in your path, you can execute the Linux
script
<pre>
bin/install_maven_plugin.sh
</pre>
or the Windows script
<pre>
bin/install_maven_plugin.bat
</pre>
They invoke Maven with the proper settings to copy DexGuard to your local
repository cache.
<p>

<h3><a name="activation">Activation</a></h3>

Once the plugin has been installed, you can start using it in your project.
You only need to specify it in the <code>pom.xml</code> file of your project,
typically replacing the Android Maven plugin:
<pre>
&lt;project&gt;
    ...
    &lt;build&gt;
        ...
        &lt;pluginmanagement&gt;
            &lt;plugins&gt;
                &lt;plugin&gt;
                    &lt;groupId&gt;com.saikoa.dexguard.maven&lt;/groupId&gt;
                    &lt;artifactId&gt;dexguard-maven-plugin&lt;/artifactId&gt;
                    &lt;version&gt;5.4.00&lt;/version&gt;
                    &lt;extensions&gt;true&lt;/extensions&gt;
                &lt;/plugin&gt;
            &lt;/plugins&gt;
        &lt;/pluginmanagement&gt;
        ...
    &lt;/build&gt;
&lt;/project&gt;
</pre>
<p>

You can find a small working project in the directory
<code>samples/Maven</code>.

<h3><a name="phases">Lifecycle Phases</a></h3>

The DexGuard plugin preserves the apk lifecycle phases of the original Android
plugin. It aliases the original goals from the "<code>android:</code>"
namespace in the "<code>dexguard:</code>" namespace (which is short for
"<code>com.saikoa.dexguard.maven:dexguard-maven-plugin:</code>").
<p>
The only different goal is <code>dexguard:apk</code>, because it runs
DexGuard, which optimizes, obfuscates, converts, signs, and zipaligns the
code.
<p>
The goals <code>android:proguard</code>, <code>android:dex</code>,
and <code>android:zipalign</code> are no longer necessary, so they don't have
aliases.
<p>

<table>
<tr>
<th align="left">Phase</th>
<th>Plugin:</th>
<th align="left">goal</th>
</tr>

<tr>
<td>generate-sources</td>
<td><b>dexguard:</b></td>
<td>generate-sources</td>
</tr>

<tr>
<td>process-resources</td>
<td>resources:</td>
<td>resources</td>
</tr>

<tr>
<td>compile</td>
<td>compiler:</td>
<td>compile</td>
</tr>

<tr>
<td>process-test-resources</td>
<td>resources:</td>
<td>testResources</td>
</tr>

<tr>
<td>test-compile</td>
<td>compiler:</td>
<td>testCompile</td>
</tr>

<tr>
<td>prepare-package</td>
<td><b>dexguard:</b></td>
<td>emma</td>
</tr>

<tr>
<td>package</td>
<td><b>dexguard:</b></td>
<td><b>apk</b></td>
</tr>

<tr>
<td>install</td>
<td>install:</td>
<td>install</td>
</tr>

<tr>
<td>pre-integration-test</td>
<td><b>dexguard:</b></td>
<td>internal-pre-integration-test</td>
</tr>

<tr>
<td>integration-test</td>
<td><b>dexguard:</b></td>
<td>internal-integration-test</td>
</tr>

<tr>
<td>deploy</td>
<td>deploy:</td>
<td>deploy</td>
</tr>
</table>
<p>

<h3>Building</h3>

The procedure for building Android applications remains the same. You can
invoke <code>mvn</code> with the usual targets, such as <code>clean</code> and
<code>package</code>. For instance, to build the debug version of your
application:
<pre>
mvn clean package
</pre>
<p>

The plugin creates debug builds by default. You can create release builds by
adding <code>-Dandroid.release=true</code> on the command line or
<code><a href="#release">&lt;release&gt;true&lt;/release&gt;</a></code> in the
<code>pom.xml</code> file of your project:
<pre>
mvn -Dandroid.release=true clean package
</pre>
<p>

Debug builds use debug settings, without optimization or obfuscation. Release
builds use release settings, with full optimization and obfuscation.
The entries in application archives are always zip-aligned for efficiency.
<p>

The DexGuard plugin can conveniently sign your applications in one go. You can
specify signing parameters on the command line and in the container
<code><a href="#sign">&lt;sign&gt;...&lt;/sign&gt;</a></code> in the
<code>pom.xml</code> file of your project. For instance:
<p>
<pre>
mvn -Dandroid.sign.storepass=android -Dandroid.sign.keypass=android clean package
</pre>
<p>

You can then deploy the application to a connected device with the
<code>deploy</code> or <code>redeploy</code> goals:
<pre>
mvn dexguard:deploy
</pre>
<p>

You can get help on the plugin with the help goal:
<pre>
mvn dexguard:help
</pre>

<h3><a name="parameters">Plugin Parameters</a></h3>

The DexGuard plugin accepts parameters in its <code>&lt;configuration&gt;</code>
element in the <code>pom.xml</code> of your project:
<p>
<pre>
&lt;project&gt;
    ...
    &lt;build&gt;
        ...
        &lt;plugins&gt;
            &lt;plugin&gt;
                &lt;groupId&gt;com.saikoa.dexguard.maven&lt;/groupId&gt;
                &lt;artifactId&gt;dexguard-maven-plugin&lt;/artifactId&gt;
                &lt;configuration&gt;
                    ...    &lt;!-- parameters go here. --&gt;
                &lt;/configuration&gt;
            &lt;/plugin&gt;
        &lt;/plugins&gt;
    &lt;/build&gt;
&lt;/project&gt;
</pre>
<p>
Note that this configuration is not nested in the
<code>&lt;pluginmanagement&gt;</code> element that was used earlier for
activating the plugin.
<p>

Since the goals are the same as for the Android plugin, the parameters are the
same too. Some parameters no longer have a meaning and are ignored.
<p>

<h3><a name="dexguardparameters">Plugin Parameters for dexguard:apk</a></h3>

The <code>dexguard:apk</code> goal supports the same parameters as
the <code>android:apk</code> goal, plus a few parameters from
the <code>android:dex</code> goal and the <code>android:proguard</code> goal,
for backward compatibility.
<p>

<dl>

<dt><a name="aaptExtraArgs"><code><b>&lt;aaptExtraArgs&gt;</b></code><i>string[]</i><code><b>&lt;/aaptExtraArgs&gt;</b></code>
    (<code>-Dandroid.aaptExtraArgs=</code><i>string[]</i>)</a></dt>
<dd>Extra arguments to be passed to the <code>aapt</code> tool when collecting
    resources and assets.</dd>

<dt><a name="androidManifestFile"><code><b>&lt;androidManifestFile&gt;</b></code><i>file</i><code><b>&lt;/androidManifestFile&gt;</b></code>
    (default = <code>${project.basedir}/AndroidManifest.xml</code>)</a></dt>
<dd>The <code>AndroidManifest.xml</code> file.</dd>

<dt><a name="apk"><code><b>&lt;apk&gt;</b></code><i>apk_configuration</i><code><b>&lt;/apk&gt;</b></code></a></dt>
<dd>Containing element for the following apk parameters.</dd>

<dt><a name="apkDebug">&rarr; <code><b>&lt;debug&gt;</b></code><i>boolean</i><code><b>&lt;/debug&gt;</b></code>
    (<code>-Dandroid.apk.debug=</code><i>boolean</i>)
    (default = <code>false</code>)</a></dt>
<dd>Specifies whether the apk is intended for debugging, in which case the
    <code>gdbserver</code> executable is added.</dd>

<!--
<dt><a name="apkMetaIncludes">&rarr; <code><b>&lt;metaIncludes&gt;</b></code><i>string[]</i><code><b>&lt;/metaIncludes&gt;</b></code>
    (<code>-Dandroid.apk.metaIncludes=</code><i>string[]</i>)</a></dt>
<dd>Names of metadata files (without their <code>META-INF/</code> prefix) that
    should be added to the apk.</dd>
-->

<dt><a name="apkNativeToolchain">&rarr; <code><b>&lt;nativeToolchain&gt;</b></code><i>string</i><code><b>&lt;/nativeToolchain&gt;</b></code>
    (<code>-Dandroid.nativeToolchain=</code><i>string</i>)
    (default = <code>arm-linux-androideabi-4.4.3</code>)</a></dt>
<dd>The name of the native toolchain, which determines the
    <code>gdbserver</code> executable to be added to a debugging apk.</dd>

<dt><a name="apkMetaIncludes"><code><b>&lt;metaIncludes&gt;</b></code><i>string[]</i><code><b>&lt;/metaIncludes&gt;</b></code>
    (<code>-Dandroid.apk.metaIncludes=</code><i>string[]</i>)</a></dt>
<dd>Names of metadata files (without their <code>META-INF/</code> prefix) that
    should be added to the apk.</dd>

<dt><a name="assetsDirectory"><code><b>&lt;assetsDirectory&gt;</b></code><i>directory</i><code><b>&lt;/assetsDirectory&gt;</b></code>
    (default = <code>${project.basedir}/assets</code>)</a></dt>
<dd>The directory that contains the assets to be added to the apk.</dd>

<dt><a name="attachJar"><code><b>&lt;attachJar&gt;</b></code><i>boolean</i><code><b>&lt;/attachJar&gt;</b></code>
    (<code>-Dandroid.attachJar=</code><i>boolean</i>)
    (default = <code>true</code>)</a></dt>
<dd>Specifies whether to attach the intermediary jar to the build. Currently
    ignored.</dd>

<dt><a name="attachSources"><code><b>&lt;attachSources&gt;</b></code><i>boolean</i><code><b>&lt;/attachSources&gt;</b></code>
    (<code>-Dandroid.attachSources=</code><i>boolean</i>)
    (default = <code>false</code>)</a></dt>
<dd>Specifies whether to attach the sources to the build. Currently
    ignored.</dd>

<dt><a name="combinedAssets"><code><b>&lt;combinedAssets&gt;</b></code><i>directory</i><code><b>&lt;/combinedAssets&gt;</b></code>
    (default = <code>${project.build.directory}/generated-sources/combined-assets/assets</code>)</a></dt>
<dd>The temporary directory in which asset files are collected before they are
    packaged.</dd>

<dt><a name="configurations"><code><b>&lt;configurations&gt;</b></code><i>string</i><code><b>&lt;/configurations&gt;</b></code>
    (<code>-Dandroid.configurations=</code><i>string</i>)</a></dt>
<dd>A comma-separated list of configurations that <code>aapt</code> should
    include in the apk.</dd>

<dt><a name="dex"><code><b>&lt;dex&gt;</b></code><i>dex_configuration</i><code><b>&lt;/dex&gt;</b></code></a></dt>
<dd>Containing element for the following dex parameters.</dd>

<dt><a name="dexCoreLibrary">&rarr; <code><b>&lt;coreLibrary&gt;</b></code><i>boolean</i><code><b>&lt;/coreLibrary&gt;</b></code>
    (<code>-Dandroid.dex.coreLibrary=</code><i>boolean</i>)
    (default = <code>false</code>)</a></dt>
<dd>Specifies whether a core library is being compiled. Currently ignored.</dd>

<dt><a name="dexNoLocals">&rarr; <code><b>&lt;noLocals&gt;</b></code><i>boolean</i><code><b>&lt;/noLocals&gt;</b></code>
    (<code>-Dandroid.dex.noLocals=</code><i>boolean</i>)
    (default = <code>false</code>)</a></dt>
<dd>Specified whether the Dalvik bytecode should include debug information
    about local variables. Currently ignored.</dd>

<dt><a name="dexOptimize">&rarr; <code><b>&lt;optimize&gt;</b></code><i>boolean</i><code><b>&lt;/optimize&gt;</b></code>
    (<code>-Dandroid.dex.optimize=</code><i>boolean</i>)
    (default = <code>true</code>)</a></dt>
<dd>Specifies whether the Dalvik bytecode should <em>not</em> be optimized.
    Currently ignored.</dd>

<dt><a name="excludeJarResources"><code><b>&lt;excludeJarResources&gt;</b></code><i>string[]</i><code><b>&lt;/excludeJarResources&gt;</b></code></a></dt>
<dd>Patterns for names of jar files whose resources should not be added to the
    apk.</dd>

<dt><a name="extractDuplicates"><code><b>&lt;extractDuplicates&gt;</b></code><i>boolean</i><code><b>&lt;/extractDuplicates&gt;</b></code>
    (<code>-Dandroid.extractDuplicates=</code><i>boolean</i>)
    (default = <code>false</code>)</a></dt>
<dd>Extracts duplicate files from embedded jars. Currently ignored.</dd>

<dt><a name="extractedDependenciesAssets"><code><b>&lt;extractedDependenciesAssets&gt;</b></code><i>directory</i><code><b>&lt;/extractedDependenciesAssets&gt;</b></code>
    (default = <code>${project.build.directory}/generated-sources/extracted-dependencies/assets</code>)</a></dt>
<dd>A temporary directory for extracted asset files.</dd>

<dt><a name="extractedDependenciesDirectory"><code><b>&lt;extractedDependenciesDirectory&gt;</b></code><i>directory</i><code><b>&lt;/extractedDependenciesDirectory&gt;</b></code>
    (default = <code>${project.build.directory}/generated-sources/extracted-dependencies</code>)</a></dt>
<dd>A temporary directory for extracted files.</dd>

<dt><a name="extractedDependenciesJavaResources"><code><b>&lt;extractedDependenciesJavaResources&gt;</b></code><i>directory</i><code><b>&lt;/extractedDependenciesJavaResources&gt;</b></code>
    (default = <code>${project.build.directory}/generated-sources/extracted-dependencies/src/main/resources</code>)</a></dt>
<dd>A temporary directory for extracted java resource files.</dd>

<dt><a name="extractedDependenciesJavaSources"><code><b>&lt;extractedDependenciesJavaSources&gt;</b></code><i>directory</i><code><b>&lt;/extractedDependenciesJavaSources&gt;</b></code>
    (default = <code>${project.build.directory}/generated-sources/extracted-dependencies/src/main/java</code>)</a></dt>
<dd>A temporary directory for extracted java files.</dd>

<dt><a name="extractedDependenciesRes"><code><b>&lt;extractedDependenciesRes&gt;</b></code><i>directory</i><code><b>&lt;/extractedDependenciesRes&gt;</b></code>
    (default = <code>${project.build.directory}/generated-sources/extracted-dependencies/res</code>)</a></dt>
<dd>A temporary directory for extracted resource files.</dd>

<dt><a name="generateApk"><code><b>&lt;generateApk&gt;</b></code><i>boolean</i><code><b>&lt;/generateApk&gt;</b></code>
    (<code>-Dandroid.generateApk=</code><i>boolean</i>)
    (default = <code>true</code>)</a></dt>
<dd>Specifies whether to generate an apk file. Currently ignored.</dd>

<!--
<dt><a name="metaInf"><code><b>&lt;metaInf&gt;</b></code><i>metainf_configuration</i><code><b>&lt;/metaInf&gt;</b></code></a></dt>
<dd>Containing element for the following meta information parameters.</dd>

<dt><a name="metaInfInclude">&rarr; <code><b>&lt;include&gt;</b></code><i>string[]</i><code><b>&lt;/include&gt;</b></code></a></dt>
<dd>Names of metadata files (without their <code>META-INF/</code> prefix) that
    should be included in the apk.</dd>

<dt><a name="metaInfExclude">&rarr; <code><b>&lt;exclude&gt;</b></code><i>string[]</i><code><b>&lt;/exclude&gt;</b></code></a></dt>
<dd>Names of metadata files (without their <code>META-INF/</code> prefix) that
    should be excluded from the apk.</dd>
-->

<dt><a name="nativeLibrariesDependenciesHardwareArchitectureDefault"><code><b>&lt;nativeLibrariesDependenciesHardwareArchitectureDefault&gt;</b></code><i>string</i><code><b>&lt;/nativeLibrariesDependenciesHardwareArchitectureDefault&gt;</b></code>
    (<code>-Dandroid.nativeLibrariesDependenciesHardwareArchitectureDefault=</code><i>string</i>)
    (default = <code>armeabi</code>)</a></dt>
<dd>The default hardware architecture for native libraries.</dd>

<dt><a name="nativeLibrariesDirectory"><code><b>&lt;nativeLibrariesDirectory&gt;</b></code><i>directory</i><code><b>&lt;/nativeLibrariesDirectory&gt;</b></code>
    (<code>-Dandroid.nativeLibrariesDirectory=</code><i>directory</i>)
    (default = <code>${project.basedir}/libs</code>)</a></dt>
<dd>The root directory containing native libraries.</dd>

<dt><a name="ndkOutputDirectory"><code><b>&lt;ndkOutputDirectory&gt;</b></code><i>directory</i><code><b>&lt;/ndkOutputDirectory&gt;</b></code>
    (default = <code>${project.build.directory}/ndk-libs</code>)</a></dt>
<dd>The temporary directory in which native libraries are collected before they
    are packaged.</dd>

<dt><a name="proguard"><code><b>&lt;proguard&gt;</b></code><i>proguard_configuration</i><code><b>&lt;/proguard&gt;</b></code></a></dt>
<dd>Containing element for the following ProGuard parameters.</dd>

<dt><a name="proguardSkip">&rarr; <code><b>&lt;skip&gt;</b></code><i>boolean</i><code><b>&lt;/skip&gt;</b></code>
    (<code>-Dandroid.proguard.skip=</code><i>boolean</i>)</a></dt>
<dd>Specifies whether to skip shrinking, optimization, and obfuscation.
    The default is true for debug builds, and false for release builds.</dd>

<dt><a name="includeJdkLibs">&rarr; <code><b>&lt;includeJdkLibs&gt;</b></code><i>boolean</i><code><b>&lt;/includeJdkLibs&gt;</b></code>
    (<code>-Dandroid.proguard.includeJdkLibs=</code><i>boolean</i>)
    (default = <code>false</code>)</a></dt>
<dd>Specifies whether the Java runtime libraries should be considered as
    library jars. Currently ignored.</dd>

<dt><a name="proguardFilterManifest">&rarr; <code><b>&lt;filterManifest&gt;</b></code><i>boolean</i><code><b>&lt;/filterManifest&gt;</b></code>
    (<code>-Dandroid.proguard.filterManifest=</code><i>boolean</i>)
    (default = <code>false</code>)</a></dt>
<dd>Specifies whether to filter out manifest files from the input.</dd>

<dt><a name="proguardFilterMavenDescriptor">&rarr; <code><b>&lt;filterMavenDescriptor&gt;</b></code><i>boolean</i><code><b>&lt;/filterMavenDescriptor&gt;</b></code>
    (<code>-Dandroid.proguard.filterMavenDescriptor=</code><i>boolean</i>)
    (default = <code>false</code>)</a></dt>
<dd>Specifies whether to filter out Maven metadata files from the input.</dd>

<dt><a name="outputDirectory">&rarr; <code><b>&lt;outputDirectory&gt;</b></code><i>directory</i><code><b>&lt;/outputDirectory&gt;</b></code>
    (<code>-Dandroid.proguard.outputDirectory=</code><i>directory</i>)
    (default = <code>proguard</code>)</a></dt>
<dd>The output directory for the Dexuard log files (<code>seeds.txt</code>,
    <code>usage.txt</code>, and <code>mapping.txt</code>).</dd>

<dt><a name="proguardConfig">&rarr; <code><b>&lt;config&gt;</b></code><i>file</i><code><b>&lt;/config&gt;</b></code>
    (<code>-Dandroid.proguard.config=</code><i>file</i>)</a></dt>
<dd>The name of the optional ProGuard configuration file, relative to the
    project directory.</dd>

<!--
<dt><a name="proguardConfigs">&rarr; <code><b>&lt;configs&gt;</b></code><i>file[]</i><code><b>&lt;/configs&gt;</b></code>
    (<code>-Dandroid.proguard.config=</code><i>file[]</i>)</a></dt>
<dd>The name of the optional ProGuard configuration files, relative to the
    project directory.</dd>

<dt><a name="proguardOptions">&rarr; <code><b>&lt;options&gt;</b></code><i>string[]</i><code><b>&lt;/options&gt;</b></code>
    (<code>-Dandroid.proguard.options=</code><i>string[]</i>)</a></dt>
<dd>Additional ProGuard/DexGuard options.</dd>
-->

<dt><a name="proguardSkip"><code><b>&lt;proguardSkip&gt;</b></code><i>boolean</i><code><b>&lt;/proguardSkip&gt;</b></code>
    (<code>-Dandroid.proguard.skip=</code><i>boolean</i>)</a></dt>
<dd>Specifies whether to skip shrinking, optimization, and obfuscation.
    The default is true for debug builds, and false for release builds.</dd>

<dt><a name="includeJdkLibs"><code><b>&lt;includeJdkLibs&gt;</b></code><i>boolean</i><code><b>&lt;/includeJdkLibs&gt;</b></code>
    (<code>-Dandroid.proguard.includeJdkLibs=</code><i>boolean</i>)
    (default = <code>false</code>)</a></dt>
<dd>Specifies whether the Java runtime libraries should be considered as
    library jars. Currently ignored.</dd>

<dt><a name="proguardFilterManifest"><code><b>&lt;proguardFilterManifest&gt;</b></code><i>boolean</i><code><b>&lt;/proguardFilterManifest&gt;</b></code>
    (<code>-Dandroid.proguard.filterManifest=</code><i>boolean</i>)
    (default = <code>false</code>)</a></dt>
<dd>Specifies whether to filter out manifest files from the input.</dd>

<dt><a name="proguardFilterMavenDescriptor"><code><b>&lt;proguardFilterMavenDescriptor&gt;</b></code><i>boolean</i><code><b>&lt;/proguardFilterMavenDescriptor&gt;</b></code>
    (<code>-Dandroid.proguard.filterMavenDescriptor=</code><i>boolean</i>)
    (default = <code>false</code>)</a></dt>
<dd>Specifies whether to filter out Maven metadata files from the input.</dd>

<dt><a name="outputDirectory"><code><b>&lt;outputDirectory&gt;</b></code><i>directory</i><code><b>&lt;/outputDirectory&gt;</b></code>
    (<code>-Dandroid.proguard.outputDirectory=</code><i>directory</i>)
    (default = <code>proguard</code>)</a></dt>
<dd>The output directory for the Dexuard log files (<code>seeds.txt</code>,
    <code>usage.txt</code>, and <code>mapping.txt</code>).</dd>

<dt><a name="proguardConfig"><code><b>&lt;proguardConfig&gt;</b></code><i>file</i><code><b>&lt;/proguarCconfig&gt;</b></code>
    (<code>-Dandroid.proguard.config=</code><i>file</i>)</a></dt>
<dd>The name of the optional ProGuard configuration file, relative to the
    project directory.</dd>

<dt><a name="proguardConfigs"><code><b>&lt;proguardConfigs&gt;</b></code><i>file[]</i><code><b>&lt;/proguardConfigs&gt;</b></code>
    (<code>-Dandroid.proguard.config=</code><i>file[]</i>)</a></dt>
<dd>The name of the optional ProGuard configuration files, relative to the
    project directory.</dd>

<dt><a name="proguardOptions"><code><b>&lt;proguardOptions&gt;</b></code><i>string[]</i><code><b>&lt;/proguardOptions&gt;</b></code>
    (<code>-Dandroid.proguard.options=</code><i>string[]</i>)</a></dt>
<dd>Additional ProGuard/DexGuard options.</dd>

</dl><dl class="new">
<dt><a name="dexguardConfig"><code><b>&lt;dexguardConfig&gt;</b></code><i>file</i><code><b>&lt;/dexguardConfig&gt;</b></code>
    (<code>-Dandroid.dexguard.config=</code><i>file</i>)
    (default = <code>dexguard-project.txt</code>)</a></dt>
<dd>The name of the optional DexGuard configuration file, relative to the
    project directory.</dd>

<dt><a name="dexguardConfigs"><code><b>&lt;dexguardConfigs&gt;</b></code><i>file[]</i><code><b>&lt;/dexguardConfigs&gt;</b></code>
    (<code>-Dandroid.dexguard.configs=</code><i>file[]</i>)</a></dt>
<dd>Alternative DexGuard configuration files, relative to the project
    directory.</dd>
</dl><dl>

<dt><a name="release"><code><b>&lt;release&gt;</b></code><i>boolean</i><code><b>&lt;/release&gt;</b></code>
    (<code>-Dandroid.release=</code><i>boolean</i>)
    (default = <code>false</code>)</a></dt>
<dd>Specifies whether this is a release build, as opposed to a debug build.</dd>

<dt><a name="renameInstrumentationTargetPackage"><code><b>&lt;renameInstrumentationTargetPackage&gt;</b></code><i>string</i><code><b>&lt;/renameInstrumentationTargetPackage&gt;</b></code>
    (<code>-Dandroid.renameInstrumentationTargetPackage=</code><i>string</i>)</a></dt>
<dd>The package that <code>aapt</code> should let instrumentation components
    target.</dd>

<dt><a name="renameManifestPackage"><code><b>&lt;renameManifestPackage&gt;</b></code><i>string</i><code><b>&lt;/renameManifestPackage&gt;</b></code>
    (<code>-Dandroid.renameManifestPackage=</code><i>string</i>)</a></dt>
<dd>The package name that <code>aapt</code> should set on the application.</dd>

<dt><a name="resourceDirectory"><code><b>&lt;resourceDirectory&gt;</b></code><i>directory</i><code><b>&lt;/resourceDirectory&gt;</b></code>
    (default = <code>${project.basedir}/res</code>)</a></dt>
<dd>The directory that contains the resource files.</dd>

<dt><a name="resourceOverlayDirectories"><code><b>&lt;resourceOverlayDirectories&gt;</b></code><i>directory[]</i><code><b>&lt;/resourceOverlayDirectories&gt;</b></code></a></dt>
<dd>Directories that contain resource overlay files.</dd>

<dt><a name="resourceOverlayDirectory"><code><b>&lt;resourceOverlayDirectory&gt;</b></code><i>directory</i><code><b>&lt;/resourceOverlayDirectory&gt;</b></code>
    (default = <code>${project.basedir}/res-overlay</code>)</a></dt>
<dd>The default directory that contains resource overlay files.</dd>

<dt><a name="sdk"><code><b>&lt;sdk&gt;</b></code><i>sdk_configuration</i><code><b>&lt;/sdk&gt;</b></code></a></dt>
<dd>Containing element for the following Android SDK parameters.</dd>

<dt><a name="sdkPath">&rarr; <code><b>&lt;path&gt;</b></code><i>directory</i><code><b>&lt;/path&gt;</b></code>
    (<code>-Dandroid.sdk.path=</code><i>directory</i>)
    (<code>ANDROID_SDK=</code><i>directory</i>)</a></dt>
<dd>The path to the Android SDK.</dd>

<dt><a name="sdkPlatform">&rarr; <code><b>&lt;platform&gt;</b></code><i>string</i><code><b>&lt;/platform&gt;</b></code>
    (<code>-Dandroid.sdk.platform=</code><i>string</i>)</a></dt>
<dd>The Android platform against which to build (1.1, 1.5, etc., or 3, 4,
    etc.)</dd>

<dt><a name="sign"><code><b>&lt;sign&gt;</b></code><i>signing_configuration</i><code><b>&lt;/sign&gt;</b></code></a></dt>
<dd>Containing element for the following signing parameters.</dd>

<dt><a name="signDebug">&rarr; <code><b>&lt;debug&gt;</b></code><i>string</i><code><b>&lt;/debug&gt;</b></code>
    (<code>-Dandroid.sign.debug=</code><i>string</i>)
    (default = <code>auto</code>)</a></dt>
<dd>Specifies whether the apk should be signed with the debug keystore (true,
    false, or auto).</dd>

</dl><dl class="new">
<dt><a name="signKeystore">&rarr; <code><b>&lt;keystore&gt;</b></code><i>file</i><code><b>&lt;/keystore&gt;</b></code>
    (<code>-Dandroid.sign.keystore=</code><i>file</i>)</a></dt>
<dd>The key store to sign processed applications.</dd>

<dt><a name="signStorepass">&rarr; <code><b>&lt;storepass&gt;</b></code><i>string</i><code><b>&lt;/storepass&gt;</b></code>
    (<code>-Dandroid.sign.storepass=</code><i>string</i>)</a></dt>
<dd>The password of the key store.</dd>

<dt><a name="signAlias">&rarr; <code><b>&lt;alias&gt;</b></code><i>string</i><code><b>&lt;/alias&gt;</b></code>
    (<code>-Dandroid.sign.alias=</code><i>string</i>)</a></dt>
<dd>The key alias.</dd>

<dt><a name="signKeypass">&rarr; <code><b>&lt;keypass&gt;</b></code><i>string</i><code><b>&lt;/keypass&gt;</b></code>
    (<code>-Dandroid.sign.keypass=</code><i>string</i>)</a></dt>
<dd>The password of the key.</dd>
</dl><dl>

<dt><a name="sourceDirectories"><code><b>&lt;sourceDirectories&gt;</b></code><i>directory[]</i><code><b>&lt;/sourceDirectories&gt;</b></code>
    (<code>-Dandroid.sourceDirectories=</code><i>directory[]</i>)</a></dt>
<dd>Additional source directories that contain resource files to be packaged in
    the apk.</dd>

<dt><a name="outputApk"><code><b>&lt;outputApk&gt;</b></code><i>file</i><code><b>&lt;/outputApk&gt;</b></code>
    (<code>-Dandroid.outputApk=</code><i>file</i>)
    (default = <code>${project.build.directory}/${project.build.finalName}.apk</code>)</a></dt>
<dd>The name of the created apk.</dd>

</dl>

<h3>Quick troubleshooting</h3>

If you are having problems running the Maven plugin:
<ul>
<li><b>NoClassDefFoundError, AbstractMethodError,</b>...: make sure that you
    are using the DexGuard plugin with the proper version of the Android Maven
    plugin. Even minor version differences can cause compatibility problems.
    Feel free to check with us if you think the DexGuard plugin is
    incompatible with a recent Android Maven plugin.</li>
<li><b>The POM for com.saikoa.dexguard.maven:dexguard-maven-plugin:jar:... is
    missing, no dependency information available</b>: you still need to
    <a href="#installation">install the DexGuard plugin</a> in your local
    repository.
<li>If a built application is not optimized or obfuscated, make sure that
    you are building with the setting <code>-Dandroid.release=true</code> or
    <code><a href="#release">&lt;release&gt;true&lt;/release&gt;</a></code>.</li>
</ul>
<p>
Please consult the more extensive
<a href="troubleshooting.html">troubleshooting</a> section if you encounter
other issues building or running your application.

<hr />
<address>
Copyright &copy; 2002-2014
<a target="other" href="http://www.saikoa.com/">Saikoa BVBA</a>.
</address>
</body>
</html>
